
#ifndef _OBJETO_DEFORMABLE_H_

#define _OBJETO_DEFORMABLE_H_

#include "Superficie_Triangular.h"
#include "Volumen_Tetraedral.h"
#include "Vertice.h"
#include "Mass_Spring_Model.h"
#include "ArbolRitter.h"

class ObjetoDeformable
{
public:
	//Constructor
	ObjetoDeformable();
	ObjetoDeformable(TipoGeometria enmTipo, char *FilenamePuntos, char *FilenameIndices);

	//Propiedades
	void set_TipoGeometria(const TipoGeometria &enmTipo){enmtipogeometria = enmTipo;}
	TipoGeometria get_TipoGeometria(){return enmtipogeometria;}
	
	void setTipoModelo(const TipoModeloFisico &enmTipo){enmtipomodelo = enmTipo;}
	TipoModeloFisico getTipoModelo(){return enmtipomodelo;}

	void set_FilenamePuntos(char *filename){charFnameArchivoPtos = filename;}
	void set_FilenameIndices(char *filename){charFnameInds = filename;}
	
	Superificie_Triangular& getSupTriang(){return objSuperficieTriangular;}
	Volumen_Tetraedral& getVolTetra(){return objVolumenTetraedral;}
	Mass_Spring_Model& getMass_Spring_Model(){return objMassSpringModel;}
	ArbolRitter& getArbolRitter(){return objArbolRitter;}

	//Metodos
	void CargarObjetoDeformable();
	void CargarJerarquia();
	void CrearModeloFisico();

private:
	//Atributos
	Superificie_Triangular objSuperficieTriangular;
	Volumen_Tetraedral objVolumenTetraedral;
	Mass_Spring_Model objMassSpringModel;
	ArbolRitter objArbolRitter;
	TipoGeometria enmtipogeometria;
	TipoModeloFisico enmtipomodelo;
	char *charFnameArchivoPtos;
	char *charFnameInds;

};


#endif